import { createApp } from 'vue'
import axios from 'axios'
import App from './App.vue'
import router from './router'
import store from './store'

axios.defaults.baseURL = 'http://apis.imooc.com/api/'
axios.interceptors.request.use(config => {
  // 设置 icode 配合后端 CORS 来实现跨域
  config.params = { ...config.params, icode: '74BA8FA3849AA5A5' }
  // 实现 loading 效果
  store.commit('setLoading', true)
  // 将每次 error 状态置为空
  store.commit('setError', { status: false, message: '' })
  if (config.data instanceof FormData) {
    config.data.append('icode', '74BA8FA3849AA5A5')
  } else {
    // 普通的 body 对象，添加到 data 中
    config.data = { ...config.data, icode: '74BA8FA3849AA5A5' }
  }
  return config
})
axios.interceptors.response.use(config => {
  // 实现 loading 效果
  store.commit('setLoading', false)
  return config
}, e => {
  // 处理错误情况
  // 首先设置错误信息为 errorData
  const { error } = e.response.data
  // 然后将错误信息通过setError的mutation进行更新
  store.commit('setError', { status: true, message: error })
  // 然后将setLoading 设置为false，让他不要转圈圈
  store.commit('setLoading', false)
  // 最后固定格式,reject请求并返回 errorData 这个错误信息
  return Promise.reject(error)
})
const app = createApp(App)
app.use(router)
app.use(store)
app.mount('#app')
